package cn.ilikes.tools.hbase.jpa.metadatas;

import java.net.URL;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Properties;
import java.util.Set;

import javax.persistence.spi.PersistenceUnitTransactionType;

import cn.ilikes.tools.hbase.jpa.metadatas.sub.configs.Datastorefactory.DataStore;
import cn.ilikes.tools.hbase.jpa.metadatas.sub.configs.Indexfactory;

/**
 * The Class PersistenceUnitMetadata.
 * 
 * @author amresh.singh
 */
public class ABPersistenceUnitMetadata {

	private String persistenceUnitName;

	private String provider;

	private Properties properties = new Properties();

	private Indexfactory indexfactory;

	private DataStore dataStore;

	/** The transaction type. */
	private PersistenceUnitTransactionType transactionType;

	/**
	 * <class>cn.zy.impetus.kundera.test.pojos.TestPersonHBase</class>
	 * <class>cn.zy.impetus.kundera.test.pojos.TestClientHBase</class>
	 */
	private List<String> classes = new ArrayList<String>();

	/** The packages. */
	private List<String> packages = new ArrayList<String>();

	/** The jar files. */
	private Set<String> jarFiles = new HashSet<String>();

	private List<String> mapfile = new ArrayList<String>();

	private Set<URL> jarUrls;

	/** The exclude unlisted classes. */
	private boolean excludeUnlistedClasses = false;

	private URL rootUrl;

	private String schemaVersion;

	public ABPersistenceUnitMetadata(String xmlSchemaVersion, URL rootUrl) {
		this.schemaVersion = xmlSchemaVersion;
		this.rootUrl = rootUrl;
	}

	public String getPersistenceUnitName() {
		return persistenceUnitName;
	}

	public String getProvider() {
		return provider;
	}

	public Properties getProperties() {
		return properties;
	}

	public Indexfactory getIndexfactory() {
		return indexfactory;
	}

	public PersistenceUnitTransactionType getTransactionType() {
		return transactionType;
	}

	public List<String> getClasses() {
		return classes;
	}

	public List<String> getPackages() {
		return packages;
	}

	public Set<String> getJarFiles() {
		return jarFiles;
	}

	public Set<URL> getJarUrls() {
		return jarUrls;
	}

	public boolean isExcludeUnlistedClasses() {
		return excludeUnlistedClasses;
	}

	public URL getRootUrl() {
		return rootUrl;
	}

	public String getSchemaVersion() {
		return schemaVersion;
	}

	public void setPersistenceUnitName(String persistenceUnitName) {
		this.persistenceUnitName = persistenceUnitName;
	}

	public void setProvider(String provider) {
		this.provider = provider;
	}

	public void setProperties(Properties properties) {
		this.properties = properties;
	}

	public void setIndexfactory(Indexfactory indexfactory) {
		this.indexfactory = indexfactory;
	}

	public void setTransactionType(PersistenceUnitTransactionType transactionType) {
		this.transactionType = transactionType;
	}

	public void setClasses(List<String> classes) {
		this.classes = classes;
	}

	public void setPackages(List<String> packages) {
		this.packages = packages;
	}

	public void setJarFiles(Set<String> jarFiles) {
		this.jarFiles = jarFiles;
	}

	public void setJarUrls(Set<URL> jarUrls) {
		this.jarUrls = jarUrls;
	}

	public void setExcludeUnlistedClasses(boolean excludeUnlistedClasses) {
		this.excludeUnlistedClasses = excludeUnlistedClasses;
	}

	public void setRootUrl(URL rootUrl) {
		this.rootUrl = rootUrl;
	}

	public void setSchemaVersion(String schemaVersion) {
		this.schemaVersion = schemaVersion;
	}

	public DataStore getDataStore() {
		return dataStore;
	}

	public void setDataStore(DataStore dataStore) {
		this.dataStore = dataStore;
	}

	public List<String> getMapfile() {
		return mapfile;
	}

	public void setMapfile(List<String> mapfile) {
		this.mapfile = mapfile;
	}

}
